/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.uca.sisbec.helpers.reportes;

import com.uca.sisbec.forms.reportes.ReporteGastosProysForm;
import com.uca.sisbec.mapping.GastosDeProyectos;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;

/**
 *
 * @author Alex
 */
public class ReporteGastosProysHelper {
    private Session session;

    public ReporteGastosProysHelper(Session session) {
        this.session = session;
    }
    
    public List<GastosDeProyectos> ConstruirReporteGastosProys(ReporteGastosProysForm data) {
        String hql = ConstruyeQueryGastosProys(data);
        Query query = session.createQuery(hql);
        query.setString("concepto", "%"+data.getConcepto()+"%");
        query.setString("fechaIni", data.getFechaIni());
        query.setString("fechaFin", data.getFechaFin());
        return new ArrayList<GastosDeProyectos>(query.list());
    }
    
    private String ConstruyeQueryGastosProys(ReporteGastosProysForm data) {
        String selectHQL = "From GastosDeProyectos where concepto like :concepto and fechaReg >= :fechaIni and fechaReg <= :fechaFin";
        String query = "";
        String masCondicionesHQL = "";
        
        if(!(data.getProyecto().equals("N/A"))){
            masCondicionesHQL = " and proyecto = '" + data.getProyecto() + "'";
        }
        if(data.getExtraordinario().equals("SI")){
            masCondicionesHQL += " and extraordinario = 'SI'";
        } else {
            masCondicionesHQL += " and extraordinario = 'NO'";
        }
        query = selectHQL + masCondicionesHQL;
        return query;
    }
    
}
